import org.apache.spark.sql.SparkSession

object zk2 {


  def main(args: Array[String]): Unit = {

//    创建一个SparkSession对象，并配置必要的参数，初始化Spark；（5分）
//    2. 从CSV文件中加载泰坦尼克号乘客数据，并展示前5条记录；（5分）
val spark = SparkSession.builder().appName("app").master("local[*]").getOrCreate()

    val frame = spark.read.csv("data/titanic_data.csv")
    frame.show(5)

    //    3. 过滤掉所有`Age`字段为空值（null）或小于0的记录，并保留其他有效记录；（5分）
    val value = frame.filter("age")
    println(value)

//    4. 计算所有乘客的幸存率，即幸存人数占总人数的比例；（5分
val group1 = frame.groupBy("PassengerId").count()

//    5. 根据性别（`Sex`）统计不同性别的幸存人数，并计算各性别的幸存率；（5分）
val group2 = frame.groupBy("Sex").count()

//    6.  按年龄段（如0-20岁、21-40岁、41-60岁、60岁以上）统计幸存人数，并计算各年龄段的幸存率；（5分）
//    7.计算每个舱位（Pclass）的乘客的平均票价，并输出结果（5分）
val group5 = frame.groupBy("PassengerId").avg("Fare")
    print(group5)
//    8.计算幸存率最高的前3个舱位，并输出其幸存率；（5分）

//    9.计算不同登船港口票价最高的2个乘客（5分）
val group6 = frame.groupBy("Embarked").avg("Fare").orderBy("2")
    print(group6)
//    10.  将第7问结果保存到HDFS，并查看文件内容；
    group5.explain("data/zk2/group5")

  }


}
